代码实现栈结构

716次阅读
没有评论

共计 919 个字符,预计需要花费 3 分钟才能阅读完成。

栈(Stack)又称先进后出(Last In First Out)的线性表简称LIFO结构,栈结构包含栈顶和栈底。

栈顶:插入和删除的一端;
栈底:不会有任何操作的一端;
不含任何数据元素的栈称为空栈
栈的插入操作,叫做进栈,也称压栈,入栈
栈的删除操作,叫做出栈,也有的叫做弹栈

import java.util.Arrays;
import java.util.EmptyStackException;

public class MyFirstStack<T> {
    private T[] props;
    private int size = 0;
    private static final int INIT_CAPACITY = 16;

    public MyFirstStack() {
        props = (T[]) new Object[INIT_CAPACITY];
    }

    public void push(T elem) {
        ensureCapacity();
        props[size++] = elem;
    }

    public T pop() {
        if (size == 0)
            throw new EmptyStackException();
        int tempSize = --size;
        T t = props[tempSize];
        props[tempSize] = null;
        return t;
    }

    private void ensureCapacity() {
        if (props.length <= size) {
            System.out.println("扩容");
            props = Arrays.copyOf(props, 2 * size + 1);
        }
    }
}

class MyStackDemo {
    public static void main(String[] args) {
        MyFirstStack<String> stringMyStack = new MyFirstStack<>();
        for (int i = 0; i < 100; i++) {
            System.out.println("push" + (i + 1) + "");
            stringMyStack.push((i + 1) + "");
        }
        for (int i = 90; i > 0; i--) {
            System.out.println("pop" + stringMyStack.pop());
        }
    }
}
正文完
 0
裴先生
版权声明:本站原创文章,由 裴先生 2021-03-13发表,共计919字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
本站勉强运行: